using System;
using Gtk;
using NHibernate.Cfg;
using NHibernate;
using System.Collections;
using NHibernate.UserTypes;

namespace PVenta
{
	class MainClass
	{
		public static void Main (string[] args)
		{
			Configuration configuration = new Configuration();
			configuration.Configure();
			
			configuration.AddAssembly("PVenta");
			
			ISessionFactory sessionFactory = configuration.BuildSessionFactory();
			ISession session = sessionFactory.OpenSession();
			
			//Listamos las categorias
			IQuery categoriaQuery = session.CreateQuery("from Categoria");
			IList category = categoriaQuery.List();
			foreach (Categoria cat in category)
			{
				Console.WriteLine("categoria.Nombre={0}", cat.Nombre);
			}
			
			Console.WriteLine();
			
			//Listamos los articulos
			IQuery articuloQuery = session.CreateQuery("from Articulo");
			IList art = articuloQuery.List();
			foreach (Articulo article in art)
			{
				Console.WriteLine("articulo.Nombre={0}", article.Nombre);
			}
			
			Console.WriteLine();
			
			//Listamos los clientes
			IQuery clienteQuery = session.CreateQuery("from Cliente");
			IList cli = clienteQuery.List();
			foreach (Cliente client in cli)
			{
				Console.WriteLine("Cliente: {0} {1}", client.Nombre, client.Apellidos);
			}
			
			Console.WriteLine();
			
			//Listamos los pedidos
			IQuery pedidoQuery = session.CreateQuery("from Pedido");
			IList ped = pedidoQuery.List();
			foreach (Pedido pedid in ped)
			{
				Console.WriteLine("Cliente: {0}, Fecha: {1}, Importe Total: {2}", pedid.Cliente, pedid.Fecha, pedid.Importetotal);
			}
			
			Console.WriteLine();
			
			//Listamos todas las lineas de pedido de todos los pedidos
			IQuery pedidolineaQuery = session.CreateQuery("from Pedidolinea");
			IList pedlin = pedidolineaQuery.List();
			foreach (Pedidolinea pedidlin in pedlin)
			{
				Console.WriteLine("Pedido: {0}, Articulo: {1}, Unidades: {2}, Precio: {3}", pedidlin.Pedido, pedidlin.Articulo, pedidlin.Unidades, pedidlin.Precio);
			}
			
			
			session.Close();
			sessionFactory.Close();
			
			Application.Init ();
			MainWindow win = new MainWindow ();
			win.Show ();
			Application.Run ();
		}
	}
}
